import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 设置中文字体
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)

# 加载CSV文件
file_path = 'D:\project-2024-AA\联合.csv'
data = pd.read_csv(file_path)

# 转换fhjl_time为datetime格式
data['fhjl_time'] = pd.to_datetime(data['fhjl_time'])

# 过滤2023年的数据
data_2023 = data[data['fhjl_time'].dt.year == 2023]

# 按客户名称（khmc）分组并汇总发货吨位（fhdw）
customer_sales_2023 = data_2023.groupby('khmc')['fhdw'].sum().sort_values(ascending=False)

# 获取前10的客户
top_10_customers = customer_sales_2023.head(10)

# 可视化2023年前10客户需求量
plt.figure(figsize=(14, 8))
ax = top_10_customers.plot(kind='bar', figsize=(14, 8), color='skyblue', edgecolor='black')
plt.title('2023年前10客户需求量（吨）', fontproperties=font)
plt.xlabel('客户', fontproperties=font)
plt.ylabel('销量（吨）', fontproperties=font)
plt.xticks(rotation=45, ha='right', fontproperties=font)
plt.grid(True, linestyle='--', linewidth=0.5)

# 在柱状图上显示具体数据
for container in ax.containers:
    ax.bar_label(container, fmt='%.0f 吨', fontproperties=font, label_type='edge')

plt.tight_layout()
plt.show()

# 可视化2023年前10客户需求量的饼图
plt.figure(figsize=(10, 6))
plt.pie(top_10_customers, labels=top_10_customers.index, autopct='%1.1f%%', startangle=140, textprops={'fontproperties': font}, pctdistance=0.85, colors=plt.cm.tab20.colors)
plt.title('2023年前10客户需求量占比', fontproperties=font)
plt.axis('equal')

# 将百分比标签移到外层
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.tight_layout()
plt.show()

# 输出前10客户信息表
top_10_customers_df = top_10_customers.reset_index()
top_10_customers_df.columns = ['客户名称', '发货吨位']
print("前10客户信息表：")
print(top_10_customers_df)

